#pragma once
#include "MTESrl.h"

#include <memory>

#include "MICEXEnums.h"
#include "MICEXTables.h"

class DataSchema
{
public:
	void ParseMICEXSchema(char* pData, long nLen);
	void MICEXParseTableData(char** pData, MICEXTablePtr pTable);
	void MICEXParseRowData(char** pData, MICEXTablePtr pTable);

	DataSchema(void);
	virtual ~DataSchema(void);

	MICEXTablePtr GetTable(int nTableID);
	MICEXTablePtr GetTable(const std::string& tableName);
	const VEC_MICEX_TABLES& GetAllTables();
	

private:

	void ParseMICEXEnumTypes(char** pData);
	void ParseMICEXTables(char** pData);
	void ParseMICEXTableFields(char** pData, bool fOutput, MICEXTablePtr pTable);

	std::auto_ptr<char> GetMICEXStringValue(char** pData);
	int32 GetMICEXIn32Value(char** pData);
	
	std::auto_ptr<MICEXEnums> enums;
	std::auto_ptr<MICEXTables> tables;
	
};

